package com.cloudkinto.service.company.vo;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

@NoArgsConstructor
@Data
public class WarehouseOrderFeeQueryResponse {

    @JsonProperty("weight")
    private Long weight;
    @JsonProperty("chargeWeight")
    private Long chargeWeight;
    @JsonProperty("length")
    private Long length;
    @JsonProperty("width")
    private Long width;
    @JsonProperty("height")
    private Long height;
    @JsonProperty("volume")
    private Long volume;


    @JsonProperty("currency")
    private String currency;
    @JsonProperty("totalFee")
    private String totalFee;
    @JsonProperty("innerWarehouseFee")
    private String innerWarehouseFee;
    @JsonProperty("tailDeliveryFee")
    private String tailDeliveryFee;
    @JsonProperty("tailOtherFee")
    private String tailOtherFee;

    @JsonProperty("feeList")
    private List<FeeListDTO> feeList;

    public Long getVolume() {
        return getLength()*getHeight()*getWidth();
    }

    @Data
    public static class FeeListDTO {
        @JsonProperty("currency")
        private String currency;
        @JsonProperty("fee")
        private String fee;
        @JsonProperty("feeCode")
        private String feeCode;
        @JsonProperty("feeDesc")
        private String feeDesc;
        //平台费用类型： 0:基础物流费、1：常规附加费、2:常规附加费-旺季附加费、3:偏远地区附加费、
        // 4:住址附加费、5:住址附加费-旺季附加费、6:燃油附加费、7：其它
        @JsonProperty("platformFeeType")
        private Integer platformFeeType;
        @JsonProperty("feeType")
        //：库内(1)、尾程派送(2)、尾程退货(3)、尾程其它（4）
        private Integer feeType;

        public FeeListDTO() {
        }

        /**
         *
         * @param fee
         * @param feeCode 费用项目编码
         * @param feeDesc 费用项目名称
         * @param platformFeeType 平台费用类型： 0:基础物流费、1：常规附加费、2:常规附加费-旺季附加费、3:偏远地区附加费 4:住址附加费、5:住址附加费-旺季附加费、6:燃油附加费、7：其它
         * @param feeType 库内(1)、尾程派送(2)、尾程退货(3)、尾程其它（4）
         */
        public FeeListDTO( String fee, String feeCode, String feeDesc, Integer platformFeeType, Integer feeType) {
            this.currency = "JPY";
            this.fee = fee;
            this.feeCode = feeCode;
            this.feeDesc = feeDesc;
            this.platformFeeType = platformFeeType;
            this.feeType = feeType;
        }

    }
}
